﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace StudyIO
{
    public partial class frmFileStreamDemo : Form
    {
        public frmFileStreamDemo()
        {
            InitializeComponent();
        }

        string filePath = @"F:\Video\Android\11-20151014-安卓基础第11天.rar";
        string copyPath = @"F:\Video\Android\11-20151014-安卓基础第11天(copy).rar";

        private void btnCopy_Click(object sender, EventArgs e)
        {
            /*
             因为比较懒所以只实现了核心的功能，没有搞让选择文件的功能和另开线程的方式
               路径就直接写死了: F:\Video\Android\11-20151014-安卓基础第11天.rar 文件 复制到中目录下 F:\Video\Android\11-20151014-安卓基础第11天(copy).rar
             */

            using (FileStream fsRead = new FileStream(this.filePath, FileMode.Open, FileAccess.Read))
            {
                using (FileStream fsWrite = new FileStream(this.copyPath, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    while (true)
                    {
                        //建立一个5M的缓存区
                        byte[] buffer = new byte[1024 * 1024 * 5];
                        //fsRead方法会将 流数据读取到缓存区中 返回真正的长度
                        int length = fsRead.Read(buffer, 0, buffer.Length);
                        //没有读取到内容，就证明已经复制完成了,结束循环
                        if (length <= 0)
                            break;
                        fsWrite.Write(buffer, 0, length);
                    }
                }
            }
            MessageBox.Show("复制完成!");
        }
    }
}
